package com.ship.dispatch.service.decisionAnalysis;

import com.ship.common.core.web.domain.JsonResult;
import com.ship.common.business.service.BaseService;
import com.ship.dispatch.bean.boats.info.CheckRentDataInfo;
import com.ship.dispatch.bean.decisionAnalysis.SmShipRent;
import com.ship.dispatch.bean.fob.SpFobFileRecord;
import com.ship.dispatch.bo.SmShipRentAnalysisBo;
import com.ship.dispatch.bo.SmShipRentBrokerSummaryListBo;
import com.ship.dispatch.model.Vo.SmShipRentAnalysisVo;
import com.ship.dispatch.model.execl.ShipRentExcel;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.ship.dispatch.bo.SmShipRentBrokerAddBo;

public interface SmShipRentService extends BaseService<SmShipRent> {

    /**
     * 根据sheet导入租金表
     * @param shipRentExcels 导入数据集合
     * @param sheetName sheet名称
     */
    void importShipRent(List<ShipRentExcel> shipRentExcels, String sheetName);

    /**
     * 导入保存船舶租金
     * @param fobFileRecord
     */
    void saveShipRent(SpFobFileRecord fobFileRecord);

    /**
     * 按船型增加租金
     * @param shipRent
     */
    JsonResult addByVesselType(SmShipRent shipRent);

    /**
     * 编辑船舶租金
     * @param shipRent
     * @return
     */
    SmShipRent updateShipRent(SmShipRent shipRent);



    /**
     * 按broker新增
     * @param addBo
     */
    JsonResult addByBroker(SmShipRentBrokerAddBo addBo);

    /**
     * 租金数据校验
     *
     * @param shipRent
     * @return
     */
    SmShipRent checkRentData(SmShipRent shipRent);

    /**
     * broker租金汇总
     * @param key
     * @param type
     * @return
     */
    Map<String,Object> summaryList(String key, String type);

    /**
     * broker租金汇总导出
     * @param key
     * @return
     */
    JsonResult<String> summaryListExport(String key, String type) throws IOException;

    /**
     * 汇总菜单树
     * @return
     */
    JsonResult summaryMenuTree();

    /**
     * 租金分析列表
     * @param analysisBo
     * @return
     */
    JsonResult<List<SmShipRentAnalysisVo>> analysisList(SmShipRentAnalysisBo analysisBo);

    /**
     * 租金分析统计图
     * @param analysisBo
     * @return
     */
    JsonResult analysisStatistics(SmShipRentAnalysisBo analysisBo);

    /**
     * 分析列表导出
     * @param analysisBo
     * @return
     */
    JsonResult analysisListExport(SmShipRentAnalysisBo analysisBo) throws IOException;

    Object checkRentDataNew(SmShipRent shipRent);
}
